package com.zuipin.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.zuipin.entity.MemberAccount;
import com.zuipin.util.Pagination;
import com.zuipin.vo.BackMemberDetailVo;
import com.zuipin.vo.MemberAccountVo;

/**
 * MemberAccountMapper数据库操作接口类
 * 
 * @ClassName: MemberAccount
 * @author wuyicheng 
 * @time 2017年4月18日下午4:43:18 
 **/

@Mapper
public interface MemberAccountMapper {
	
	/**
	 * 查询（根据主键ID查询）
	 * 
	 * @author: wuyicheng 
	 * @date: 2017年4月18日下午4:50:31 
	 **/
	public MemberAccount findById(@Param("id") Long id);
	
	/**
	 * 删除（根据主键ID删除）
	 * 
	 * @author: wuyicheng 
	 * @date: 2017年4月18日下午4:50:31 
	 **/
	public int deleteByPrimaryKey(@Param("id") Long id);
	
	/**
	 * 添加 （匹配有值的字段）
	 * 
	 * @author: wuyicheng 
	 * @date: 2017年4月18日下午4:50:31 
	 **/
	public int insert(MemberAccount memberAccount);
	
	/**
	 * 修改 （匹配有值的字段）
	 * 
	 * @author: wuyicheng 
	 * @date: 2017年4月18日下午4:50:31 
	 **/
	public int update(MemberAccount memberAccount);
	
	/**
	 * 
	 *
	 * @Title: findByMemberAccount 
	 * @author: wuyicheng
	 * @date: 2017年4月19日下午8:20:44 
	 * @param map
	 * @return
	 * @return: MemberAccountVo
	 * @throws
	 */
	public MemberAccountVo findByMemberAccount(Map<String, Object> map);
	
	public MemberAccount findMemberAccount(MemberAccount memberAccount);
	
	public List<MemberAccount> findListByPage(@Param("ma") MemberAccount memberAccount, @Param("page") Pagination page);
	
	/** 
	 *
	 * @Title: findListByMap 
	 * @author: wuyicheng
	 * @date: 2017年5月5日上午10:25:15 
	 * @param map
	 * @return
	 * @return: List<MemberAccount>
	 * @throws 
	 */
	public List<MemberAccount> findListByMap(Map<String, Object> map);
	
	/** 
	 *
	 * @Title: searchMemberByMap 
	 * @author: wuyicheng
	 * @date: 2017年7月10日下午3:36:59 
	 * @param searchMap
	 * @return
	 * @return: List<Map<String,Object>>
	 * @throws 
	 */
	public List<Map<String, Object>> searchMemberByMap(Map<String, Object> searchMap);
	
	public int updateLeverAndGrowthValueBack(@Param("updateMember") BackMemberDetailVo backMemberDetailVo);
	
	/**
	 * 更新积分 
	 * @Title: updateIntegral 
	 * @Description: TODO
	 * @author xujinding
	 * @param @param id
	 * @param @param num
	 * @return void
	 * @throws
	 */
	public void updateIntegral(@Param("id") Long id, @Param("num") Integer num);
	
	/**
	 * 更新充值
	 * @Title: updateAmount 
	 * @Description: TODO
	 * @author xujinding
	 * @param @param id
	 * @param @param num
	 * @return void
	 * @throws
	 */
	public void updateAmount(@Param("id") Long id, @Param("num") BigDecimal num);
	
	/**
	 *  更新成长值和等级
	 * @Title: updateGrowthValue 
	 * @Description: TODO
	 * @author huihang
	 * @param @param id
	 * @param @param num
	 * @return void
	 * @throws
	 * 
	 */
	public void updateGrowthValueAndLevel(@Param("id") Long id, @Param("num") Integer num, @Param("memberLevelId") Long memberLevelId);
	
	/**
	 * 
	 *
	 * @Title: findByMemberAccount 
	 * @author: wuyicheng
	 * @date: 2017年4月19日下午8:20:44 
	 * @param map
	 * @return
	 * @return: MemberAccountVo
	 * @throws
	 */
	public MemberAccount findByMemberAccountForUpdate(MemberAccount memberAccount);
	
	/**
	 * 
	 */
	public void updateMemberAccountToAgent(@Param("id") Long id);
}